/**
 * @file
 * @brief header of (module)
 * @details
 *  \b purpose
 * 
 * @author buaa.byl
 * @date 2012-02-14 created
 */

#ifndef GETOPT_WIN32_H_D716C39E_56DD_11E1_A20C_005056C00008_INCLUDED_
#define GETOPT_WIN32_H_D716C39E_56DD_11E1_A20C_005056C00008_INCLUDED_

/* ************************************************************************* */
/*              include files                                                */
/* ************************************************************************* */


/* ************************************************************************* */
/*              C linkage declaration (begin)                                */
/* ************************************************************************* */
#if defined(__cplusplus)
extern "C"
{
#endif


/* ************************************************************************* */
/*              declare of module type or struct                             */
/* ************************************************************************* */
typedef struct _GETOPT_OPTS {
    char opt;
    const char* arg;
}GETOPT_OPTS;

typedef struct _GETOPT_INFO
{
    //This is argument with '-'.
    int nr_opts;
    GETOPT_OPTS* opts;
    //Orphan argument.
    int nr_args;
    const char** args;
}GETOPT_INFO;


/* ************************************************************************* */
/*              declare of module interface                                  */
/* ************************************************************************* */
GETOPT_INFO* getopt_win32(int argc, const char* argv[], const char* optstring);
void getopt_free(GETOPT_INFO* p);


/* ************************************************************************* */
/*              C linkage declaration (end)                                  */
/* ************************************************************************* */
#if defined(__cplusplus)
}
#endif


#endif

